home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PCMania 53
/
PCMania CD53_1.iso
/
pcmania
/
prog53
/
borland
/
002win95.c
next >
Wrap
C/C++ Source or Header
|
1996-06-30
|
4KB
|
141 lines
/****************************************************\
* *
* 002WIN95.C *
* Archivo con las funciones obligatorias. *
* Implementaci≤n de una ventana base. *
* *
* I±aki Otero. Alcorc≤n, 1996. *
* *
\****************************************************/
// Archivo de cabecera de nuestro programa
#include "002WIN95.H"
/*-------------------------- HANDLES Y VARIABLES ---*/
// Variable con el nombre que le vamos
// a dar a la clase de nuestra ventana
char VentBase[] = "VENTANA_BASE" ;
/*--------------- FUNCION PRINCIPAL DEL PROGRAMA ---*/
// Para evitar mensajes de parßmetros no utilizados
#pragma argsused
// Funci≤n principal
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hwnd ; // Handle de la ventana principal
MSG msg ; // Estructura del mensaje
WNDCLASSEX wcx ; // Estructura de la
// clase de la ventana
// Rellenamos la estructura de la clase
// de la ventana para definirla
// Toma el tama±o de la estructura
wcx.cbSize= sizeof(WNDCLASSEX) ;
// Toma los valores mßs usuales
wcx.style = CS_HREDRAW | CS_VREDRAW ;
// Funci≤n del procedimiento de ventana
wcx.lpfnWndProc = WinProc ;
// Informaci≤n adicional de la clase
wcx.cbClsExtra = 0 ;
// Informaci≤n adicional de la ventana
wcx.cbWndExtra = 0 ;
// Instancia actual de la aplicaci≤n
wcx.hInstance = hInstance ;
// Icono grande con el logo de Windows
wcx.hIcon = LoadIcon(NULL, IDI_WINLOGO) ;
// cursor de flecha blanca
wcx.hCursor = LoadCursor(NULL, IDC_ARROW) ;
// fondo blanco
wcx.hbrBackground = (HBRUSH)
GetStockObject(WHITE_BRUSH);
// Todavφa no hay Men·
wcx.lpszMenuName = NULL ;
// Nombre de la Clase
wcx.lpszClassName = VentBase ;
// Icono peque±o con el logo de Windows
wcx.hIconSm = LoadIcon(NULL, IDI_WINLOGO) ;
// Registramos la clase de la ventana.
if(!RegisterClassEx(&wcx)) return (FALSE) ;
// Creamos la ventana
hwnd = CreateWindowEx(
WS_EX_OVERLAPPEDWINDOW, // estilo extendido
VentBase, // clase de nuestra ventana
"Nuestra Ventana Base", // tφtulo de la ventana
WS_OVERLAPPEDWINDOW, // estilo de la ventana
CW_USEDEFAULT, // posici≤n horizontal(coord. X)
CW_USEDEFAULT, // posici≤n vertical (coord. Y)
CW_USEDEFAULT, // ancho de la ventana
CW_USEDEFAULT, // alto de la ventana
NULL, // ventana padre, no existe
NULL, // a·n no existe el men·
hInstance, // instancia actual
NULL) ; // no hay mßs informaci≤n
// Si no se puede crear la ventana, salimos
if(!hwnd) return (FALSE) ;
// La ventana estß creada,
// pero hay que hacerla visible
// Hacemos visible la ventana
ShowWindow(hwnd, nCmdShow) ;
// Actualizamos la ventana
UpdateWindow(hwnd) ;
// Bucle de mensajes
// Leemos los mensajes
while (GetMessage(&msg, NULL, 0, 0))
{
// Convertimos las teclas
TranslateMessage(&msg) ;
// Devolvemos el control a Windows 95
DispatchMessage(&msg) ;
}
// Devuelve el valor recibido de PostQuitMessage
return (msg.wParam) ;
}
/*--------- FUNCION DEL PROCEDIMIENTO DE VENTANA ---*/
long CALLBACK WinProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch(message)
{
// Terminamos el programa
case WM_DESTROY:
PostQuitMessage(0) ;
break ;
// Al Windows95 se le da total libertad para
// que procese todos los mensajes que no estΘn
// dentro de este bucle switch, o sea que los
// mensajes que no hemos tratado se los dejamos
// a Windows 95
default :
// devolvemos los parßmetros recibidos
return DefWindowProc(hwnd, message,
wParam, lParam) ;
}
return 0 ;
}
/*------------------------------ FIN DEL ARCHIVO ---*/